package com.rjs.netty.handler;

import java.util.Date;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

public class TimeClientHandler extends ChannelInboundHandlerAdapter {
	
	private ByteBuf buf;

	@Override
	public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
		buf = ctx.alloc().buffer(4);
	}

	@Override
	public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
		buf.release();
		buf = null;
	}

	@Override
	public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
		ByteBuf m = (ByteBuf)msg;
		try {
			//信息如果太长，传输过程中，可能会被拆包，可以读取的时候，直接读取也许会造成信息没有读取完成的情况
			long timeInMillis= m.readInt() * 1000L;
			System.out.println(new Date(timeInMillis));
			ctx.close();
		} finally {
			m.release();
		}
		
		//每次读取的内容写入另一个ByteBuf，当读取的长度达到我们的要求的时候，再进行处理
		/*ByteBuf m = (ByteBuf)msg;
		buf.writeBytes(m);
		m.release();
		
		if (buf.readableBytes() >= 4) {
			long timeInMillis= buf.readInt() * 1000L;
			System.out.println(new Date(timeInMillis));
			ctx.close();
		}*/
	}

	
}
